﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using Suspiros_ObjetosNegocio;

namespace Suspiros_Persistencia
{
    public class ProductoDAO
    {
        Conexion conn = new Conexion();

        //Obtener productos por catalogo
        public DataSet obtenerProductosByCatalogo(int idCatalogo)
        {
            SqlDataAdapter miDA = new SqlDataAdapter();
            DataSet miDataSet = new DataSet();
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_productosByCatalogo", miConn);
            //cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@catalogo", idCatalogo);
            //Resultados
            miDA.SelectCommand = cmdSP;
            miDA.SelectCommand.CommandType = CommandType.StoredProcedure;
            miDA.Fill(miDataSet, "Producto");
            return miDataSet;
        }

        //Obtener productos por id
        public DataSet obtenerProductosById(int id)
        {
            SqlDataAdapter miDA = new SqlDataAdapter();
            DataSet miDataSet = new DataSet();
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_productosById", miConn);
            //cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            //cmdSP.Parameters.AddWithValue("@accion", 4);
            cmdSP.Parameters.AddWithValue("@id", id);
            //Resultados
            miDA.SelectCommand = cmdSP;
            miDA.SelectCommand.CommandType = CommandType.StoredProcedure;
            miDA.Fill(miDataSet, "Producto");
            return miDataSet;
        }

        public Object agregaProducto(Producto producto)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_agregarProducto", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            //cmdSP.Parameters.AddWithValue("@accion", 1);
            cmdSP.Parameters.AddWithValue("@imagen", producto.Imagen);
            cmdSP.Parameters.AddWithValue("@nombre", producto.Nombre);
            cmdSP.Parameters.AddWithValue("@descripcion", producto.Descripcion);
            cmdSP.Parameters.AddWithValue("@precio", producto.Precio);
            cmdSP.Parameters.AddWithValue("@stock", producto.Stock);
            cmdSP.Parameters.AddWithValue("@catalogo", producto.Catalogo);
            //Resultados
            Object idUser = cmdSP.ExecuteScalar();
            miConn.Close();
            return idUser;
        }

        public int stockProductoById(int idProducto)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_stockProductoById", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@id", idProducto);
            //Resultados
            //Resultados
            int id = (int)cmdSP.ExecuteScalar();
            miConn.Close();
            return id;
        }

        public DataSet obtenerProductos(string campo)
        {
            string consulta = "select * from productos order by " + campo + " Asc";
            SqlDataAdapter miDA;
            DataSet miDataSet = new DataSet();
            miDA = new SqlDataAdapter();
            miDA.SelectCommand = new SqlCommand(consulta, conn.getConexion());
            miDA.SelectCommand.CommandType = CommandType.Text;
            miDA.Fill(miDataSet, "Producto");
            return miDataSet;
        }

        public void eliminarProducto(int idProducto)
        {
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_eliminarProducto", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@id", idProducto);
            //Resultados
            cmdSP.ExecuteNonQuery();
            miConn.Close();
        }

        public void actualizarProducto(Producto producto)
        {
            //SqlDataAdapter miDA = new SqlDataAdapter();
            //DataSet miDataSet = new DataSet();
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_actualizarProducto", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@id", producto.Id);
            cmdSP.Parameters.AddWithValue("@Nombre", producto.Nombre);
            cmdSP.Parameters.AddWithValue("@imagen", producto.Imagen);
            cmdSP.Parameters.AddWithValue("@descripcion", producto.Descripcion);
            cmdSP.Parameters.AddWithValue("@precio", producto.Precio);
            cmdSP.Parameters.AddWithValue("@stock", producto.Stock);
            cmdSP.Parameters.AddWithValue("@catalogo", producto.Catalogo);
            //Resultados
            cmdSP.ExecuteNonQuery();
            miConn.Close();
        }

        public DataTable obtenerImagenProductos()
        {
            SqlDataAdapter miDA = new SqlDataAdapter();
            DataTable dt = new DataTable();
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_imgProductos", miConn);
            //cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            //Resultados
            miDA.SelectCommand = cmdSP;
            miDA.SelectCommand.CommandType = CommandType.StoredProcedure;
            miDA.Fill(dt);
            return dt;
        }
    }
}
